
// 3. 如果直接使用则会报错
// declare /dɪˈkler/  声明；断言；
// declare 不能写在作用域以内
declare const $: (seletor: string) => any;
$('#app').css('color', 'red');

{


/**
 * 1. 获取变量或者对象属性的类型
 * 2. 内置构造器类型
 * */

// 1. 获取类型
let num: number = 200;
// console.log(typeof num);
// console.log(typeof(num));
// ts 中的 typeof 有更多的检验能力, 是ts实现的新的方法
// 表现起来跟普通的没两样，如果是引用类型，通通返回object

// 取别名： -> 别名是一个类型，这个类型来自于typeof 检测出来的类型
type numType = typeof num;
let num1: numType;
num1 = 19;
// num1 = 'asda';  // X  会报错

// 2. 获取对应的键
// interface person1 {
//     name: string,
//     age: numType
// }

// let obj12: person1 = {
//     name: '迪丽热巴',
//     age: 20
// }

// // keyof 就是会自动在指定的接口中进行枚举
// // 参数1：目标对象
// // 参数2：是被 keyof 声明过的接口
// function getData(o: person1, k: keyof person1 ): any {
//     return o[k];
// }
// const result: any = getData(obj12, 'name')
// console.log(result);


// 4. 内置类型，用的很少
// 使用传统的构造函数添加批注
const str: String = 'hello';
const str1: String = new String('abc');
const count: Number = 100;
const bool: Boolean = false;
const reg: RegExp = /123/;
const time: Date = new Date();

// BOM 和 DOM 的内置类型
const box = document.querySelector('#app');
// 断言
// (box as HTMLElement).style.color = 'red';

// 只是声明
const box1: HTMLElement = document.querySelector('#app') as HTMLElement;
const listLI: NodeList = document.querySelectorAll('li') as NodeList;


}




